Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / MicrophoneRecorder.js

Displaying Raw • Download


meshchatx/src/frontend/js/MicrophoneRecorder.js e949ccf10a23b8a47a2530484eb282948c5b9992 (e949ccf1) Text, 1.92 KB

T8b949e/**
* A simple class for recording microphone input and returning the audio.
*/
Tff7b72class Te6edf3MicrophoneRecorder Tb4b4b4{
Tff7b72constructorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3audioChunks Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3microphoneMediaStream Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mediaRecorder Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72async Te6edf3startTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// request access to the microphone
Tff7b72thisTb4b4b4.Te6edf3microphoneMediaStream Tff7b72= Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3mediaDevicesTb4b4b4.Te6edf3getUserMediaTb4b4b4(Tb4b4b4{
Te6edf3audioTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// create media recorder
Tff7b72thisTb4b4b4.Te6edf3mediaRecorder Tff7b72= Tff7b72new Te6edf3MediaRecorderTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3microphoneMediaStreamTb4b4b4)Tb4b4b4;

T8b949e// handle received audio from media recorder
Tff7b72thisTb4b4b4.Te6edf3mediaRecorderTb4b4b4.Te6edf3ondataavailable Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3audioChunksTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

T8b949e// start recording
Tff7b72thisTb4b4b4.Te6edf3mediaRecorderTb4b4b4.Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// successfully started recording
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72async Te6edf3stopTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// handle media recording stopped
Tff7b72thisTb4b4b4.Te6edf3mediaRecorderTb4b4b4.Te6edf3onstop Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// stop using microphone
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3microphoneMediaStreamTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3microphoneMediaStreamTb4b4b4.Te6edf3getTracksTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3trackTb4b4b4) Tb4b4b4=> Te6edf3trackTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// create blob from audio chunks
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3audioChunksTb4b4b4, Tb4b4b4{
Te6edf3typeTff7b72: Tff7b72thisTb4b4b4.Te6edf3mediaRecorderTb4b4b4.Te6edf3mimeTypeTb4b4b4, T8b949e// likely to be "audio/webm;codecs=opus" in chromium
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// resolve promise
Te6edf3resolveTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

T8b949e// stop recording
Tff7b72thisTb4b4b4.Te6edf3mediaRecorderTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3rejectTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72export Tff7b72default Te6edf3MicrophoneRecorderTb4b4b4;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────